package com.decent.manager.system.controller;

import com.decent.common.bo.MessageBean;
import com.decent.common.enums.ErrorCodeEnum;
import com.decent.manager.system.dto.SystemClassifyDTO;
import com.decent.manager.system.service.SystemClassifyService;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * 系统类别管理接口
 * @author: decent Gjh
 * @date: 2022/10/25/18:33
 * @description:
 */
@RequestMapping("classify")
@RestController
@Slf4j
@CrossOrigin
public class SystemClassifyController {
    private final SystemClassifyService classifyService;

    public SystemClassifyController(SystemClassifyService classifyService) {
        this.classifyService = classifyService;
    }

    /**
     * 增加分类
     * args：
     *   file file 文件
     *   name	string 分类名
     *   sort int 顺序
     * @param classifyDTO 分类信息
     * @param result result
     * @return 返回是否成功
     */
    @PostMapping()
    public MessageBean addClassify(@Validated(Insert.class) SystemClassifyDTO classifyDTO , BindingResult result) {
        if (result.hasErrors()){
            return new MessageBean(ErrorCodeEnum.INVALID_PARAMS, result.getAllErrors().get(0).getDefaultMessage());
        }
        return classifyService.insertClassify(classifyDTO);
    }

    /**
     * 删除分类
     * args：
     *   id int 分类id
     * @param classifyDTO 分类信息
     * @param result    result
     * @return 是否成功
     */
    @DeleteMapping
    public MessageBean deleteClassify(@Validated(Delete.class) SystemClassifyDTO classifyDTO, BindingResult result) {
        if (result.hasErrors()){
            return new MessageBean(ErrorCodeEnum.INVALID_PARAMS, result.getAllErrors().get(0).getDefaultMessage());
        }
        return classifyService.deleteClassify(classifyDTO);
    }

    /**
     * 更新分类
     * args：
     *   id int 分类id
     *   icoUrl  图标地址
     *   name	string 分类名
     *   sort int 顺序
     * @param classifyDTO 分类信息
     * @param result result
     * @return 是否成功
     */
    @PutMapping
    public MessageBean updateClassify(@Validated(Update.class) SystemClassifyDTO classifyDTO, BindingResult result){
        if (result.hasErrors()){
            return new MessageBean(ErrorCodeEnum.INVALID_PARAMS, result.getAllErrors().get(0).getDefaultMessage());
        }
        return classifyService.updateClassify(classifyDTO);
    }

    /**
     * 查询分类
     * @param classifyDTO 查询条件
     * @param result result
     * @return 分类列表
     */
    @GetMapping
    public MessageBean selectClassify(@Validated(Select.class) SystemClassifyDTO classifyDTO, BindingResult result){
        if (result.hasErrors()){
            return new MessageBean(ErrorCodeEnum.INVALID_PARAMS, result.getAllErrors().get(0).getDefaultMessage());
        }
        return classifyService.selectClassify(classifyDTO);
    }
}
